package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.*;
import com.itlong.cloud.POJO.VO.operate.OperateU8BaseDataCustomerVO;
import com.itlong.cloud.POJO.VO.operate.OperateU8BaseDataDepartmentVO;
import com.itlong.cloud.POJO.VO.operate.OperateU8BaseDataSalesVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-U8基础数据访问接口实现类
 * </desc>
 *
 * @createDate 2020/12/02
 */
@Mapper
@Repository
public interface IOperateU8BaseDataDao {

    /**
     * <desc>
     *      获取业务员部门列表
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/12/02
     */
    List<OperateU8BaseDataDepartmentVO> getDepartmentPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取业务员部门分页数量
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/12/02
     */
    Integer getDepartmentPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取业务员列表
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/12/02
     */
    List<OperateU8BaseDataSalesVO> getSalesPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取业务员分页数量
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/12/02
     */
    Integer getSalesPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取客户列表
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/12/02
     */
    List<OperateU8BaseDataCustomerVO> getCustomerPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取客户分页数量
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/12/02
     */
    Integer getCustomerPageCount(Map<String, Object> params);


    /**
     * <desc>
     *      批量保存任务书详情
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveByAssignmentDetails(List<OperateU8AssignmentDetailsInfoPO> list);

    /**
     * <desc>
     *      批量保存任务书
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveByAssignment(List<OperateU8AssignmentInfoPO> list);

    /**
     * <desc>
     *      批量保存客户
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveByCustomer(List<OperateU8CustomerInfoPO> list);

    /**
     * <desc>
     *      批量保存产品
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveByProduct(List<OperateU8ProductInfoPO> list);

    /**
     * <desc>
     *      批量保存收货人
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveByReceiver(List<OperateU8ReceiverInfoPO> list);

    /**
     * <desc>
     *      批量保存部门
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveByDepartment(List<OperateU8SaleDepartmentInfoPO> list);

    /**
     * <desc>
     *      批量保存业务员
     * </desc>
     *
     * @param list 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSaveBySale(List<OperateU8SaleInfoPO> list);

    /**
     * <desc>
     *      批量保存
     * </desc>
     *
     * @param params 待保存的信息列表
     * @return 受影响的行数
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer batchSave(List<Map<String, Object>> params);


    /**
     * <desc>
     *      同步前需删除原有表信息数据
     * </desc>
     *
     * @return 0 失败，1 成功
     * @author Juguang.S
     * @createDate 2020/12/04
     */
    Integer deleteOldData(@Param("type") String type);

    /**
     * <desc>
     *       根据u8任务书名称找出匹配的运营项目id
     * </desc>
     *
     * @return projectId与assignmentNumber的map列表
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    List<OperateProjectAssignmentInfoPO> getProjectAssignmentList();

    /**
     * <desc>
     *      批量保存项目与任务书信息
     * </desc>
     *
     * @param projectAssignmentInfoPOS 要保存的数据
     * @return 受影响行数
     * @Author Zhu.yj
     * @createDate  2020/12/22
     */
    Integer batchSaveProjectAssignmentList(@Param("list") List<OperateProjectAssignmentInfoPO> projectAssignmentInfoPOS);

}
